//package com.fingard.dsp.bank.directbank.citi01;
//
//import java.io.File;
//import java.util.Calendar;
//import java.util.Date;
//import java.util.List;
//import java.util.Map;
//
//import com.fingard.constant.Format;
//import com.fingard.dsp.bank.directbank.bankInterface.IBalance;
//import com.fingard.dsp.bank.reqrespobj.balance.Req7505HisBalQry;
//import com.fingard.dsp.bank.reqrespobj.balance.Req7506BalQry;
//import com.fingard.dsp.bank.reqrespobj.balance.RetAts7505HisBalQry;
//import com.fingard.dsp.bank.reqrespobj.balance.RetAts7506BalQry;
//import com.fingard.dsp.bank.reqrespobj.balance.detail.RetAtsBalDetail;
//import com.fingard.io.FileHelper;
//import com.fingard.text.StringHelper;
//import com.fingard.xml.XmlTextReader;
//import com.fingard.xml.XmlTextWriter;
//
//import static com.fingard.io.FileHelper.existFile;
//import static com.fingard.text.StringHelper.trimEndFileSp;
//
//public class CITI01Balance extends CITI01Base implements IBalance {
//
//    public RetAts7506BalQry d_7506_BalQry(Req7506BalQry p_req7506) throws Exception {
//        return d_7506_BalQry_sftp(p_req7506);
//
//        //   return "sftp".equals(getBankConfig().getValueAsString("channelFlag"))?d_7506_BalQry_sftp(p_req7506):d_7506_BalQry_api(p_req7506);
//    }
//
//    /**
//     * sftp
//     * @param p_req7506
//     * @return
//     * @throws Exception
//     */
//    public RetAts7506BalQry d_7506_BalQry_sftp(Req7506BalQry p_req7506) throws Exception {
//        RetAts7506BalQry retAts = new RetAts7506BalQry(p_req7506.reqHeader);
//        retAts.writeStart();
//        while(p_req7506.readRecord()) {
//            //创建返回到ATS余额对象
//            RetAtsBalDetail detail = new RetAtsBalDetail();
//            //帐号
//            String AccountNum = p_req7506.readedDetail.actNum;
//            //设置时间
//            Calendar calendar = Calendar.getInstance();
//            Date date = new Date();
//            calendar.setTime(date);
//            String daybefore = com.fingard.dsp.bank.directbank.fngrd01.util.StringHelper.isNullOrEmpty(getBankConfig().getValueAsString("daybefore"))?"7":getBankConfig().getValueAsString("daybefore");//默认查询7
//            String dealedFile = trimEndFileSp(getBankConfig().getValueAsString("MT942Path"))
//                    + File.separator + Format.Date8Format.format(calendar.getTime()) + File.separator + AccountNum + "_7506.txt";
//            for(int i=0;i<Integer.parseInt(daybefore);i++) {
//                if(FileHelper.existFile(dealedFile)){
//                    //读取文件内容
//                    String balanceContent = FileHelper.readFileText(dealedFile,getCharset());
//                    WriteBankLogLn("读取到的文件内容："+balanceContent);
//                    if(StringHelper.hasAnyChar(balanceContent)){
//                        //账号|币种|当前余额|可用余额|昨日余额(MT940)
//                        //账号|币种|当前余额|可用余额|期初余额|最后交易日期|文件生成时间|期初余额对应的日期(MT942)
//                        String[] bal  =balanceContent.split("\\|");
//                        detail.actNum =bal[0];
//                        detail.actCur =convertCurToATS(bal[1]);
//                        detail.currBal =bal[2];
//                        detail.availBal =bal[3];
//                        detail.yesterdayBal = bal[4];
//                        detail.respCode ="0";
//                        break;
//                    }else {
//                        detail.respCode="-1";
//                        detail.respInfo="文件读取异常";
//                        break;
//                    }
//                }else {
//                    WriteBankLogLn("账户"+AccountNum+"在"+calendar+"日期的MT940文件不存在,继续往前一天遍历，第"+(i+1)+"次");
//                    calendar.add(Calendar.DAY_OF_MONTH,-1);
//                    dealedFile = trimEndFileSp(getBankConfig().getValueAsString("MTPath"))
//                            + File.separator + Format.Date8Format.format(calendar.getTime()) + File.separator + AccountNum + "_7505.txt";
//                }
//            }
//            if(StringHelper.isNullOrEmpty(detail.availBal)){
//                detail.respCode = "0";
//                detail.respInfo="银行未返回对账文件，请稍后再试";
//            }
//            retAts.writeRetDetail(detail,p_req7506.isBatch);
//        }
//        retAts.writeEnd();
//        return retAts;
//    }
//
//    /**
//     * api
//     * @param p_req7506
//     * @return
//     * @throws Exception
//     */
//    public RetAts7506BalQry d_7506_BalQry_api(Req7506BalQry p_req7506) throws Exception {
//        RetAts7506BalQry retAts = new RetAts7506BalQry(p_req7506.reqHeader);
//        retAts.writeStart();
//        try {
//            XmlTextWriter xmlWriter = new XmlTextWriter();//发银行报文的XML对象
//            xmlWriter.writeStartDocByDeclaration("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
//            xmlWriter.writeElementAttribute("balanceInquiryRequest", "xmlns", "http://com.citi.citiconnect/services/types/inquiries/balance/v1");
//            while (p_req7506.readRecord()) {
//                xmlWriter.writeElementString("accountNumber", p_req7506.readedDetail.actNum);
//                xmlWriter.writeElementString("branchNumber", "0");
//                xmlWriter.writeElementString("baseCurrency", p_req7506.readedDetail.actCur);
//                xmlWriter.writeElementString("accountCurrency", p_req7506.readedDetail.actCur);
//                xmlWriter.writeEndDocument();
//                String[] tmpRetBkStr = sendToBank(xmlWriter.toXmlString(), "7505");
//                if (tmpRetBkStr[0].length() == 0) {
//                    StringBuilder tmpSbMsg = new StringBuilder();
//                    XmlTextReader tmpBkReader = loadBankRespXmlReader(tmpRetBkStr[1], tmpSbMsg);
//                    if (tmpBkReader != null) {
//                        //"/transaction/"+bankHeader.transactionNodeName+"/"+bankHeader.transactionNodeName+"Respond/"+bankHeader.transactionNodeName+"RespondHeader/respondStatus/respondInfo"
//                        String respondCode = tmpBkReader.getSimpleText("MsgId");
//                        if (respondCode != null) {
//                            while (tmpBkReader.read("/Document/BkToCstmrAcctRpt/Rpt/Bal")) {
//                                RetAtsBalDetail tmpRetDetail = new RetAtsBalDetail();
//                                tmpRetDetail.actNum = p_req7506.readedDetail.actNum;
//                                tmpRetDetail.currBal = tmpBkReader.readedXElement.getSingleText("Amt");
//                                tmpRetDetail.availBal = tmpBkReader.readedXElement.getSingleText("Amt");
//                                retAts.writeRetDetail(tmpRetDetail, p_req7506.isBatch);
//                            }
//                        } else {
//                            retAts.writeRespCode("-1");
//                            retAts.writeRespInfo("银行返回错误");
//                        }
//                    } else {
//                        retAts.writeRespCode("-1");
//                        retAts.writeRespInfo(tmpSbMsg.toString());
//                    }
//                } else {
//                    retAts.writeRespCode("-1");
//                    retAts.writeRespInfo(tmpRetBkStr[1]);
//                }
//            }
//        } catch (Exception e) {
//            retAts.writeRespCode("-1");
//            retAts.writeRespInfo(e.getMessage());
//            e.printStackTrace();
//        }
//        retAts.writeEnd();
//        return retAts;
//    }
//
//    public RetAts7505HisBalQry d_7505_BalQry(Req7505HisBalQry p_req7505) throws Exception{
//        return null;
//    }
//}
